情况说明
有一天我用 GitKragen 打开我常用的仓库 Note,但发现有这样的报错:
之后用 GitKragen 始终打不开仓库 Notes 仓库。
本文分析了可能出现此情况的所有可能,提出解决这个问题的方法,以及使用 GitKragen 的经验教训。
原因分析
在 https://support.gitkraken.com/faq/ 有专门这样一条:

翻译解释如下:
- 当前的仓库被其他工具占用了,先把这些工具解除对仓库的占用,再尝试用 GitKragen 打开。
- 尝试将仓库未解决的更改 stash ,或者提交,或者切换分支,再尝试用 GitKragen 打开。
- 坑你是某个文件的完整路径过长,GitKragen 支持的最大的文件路径是 260 个字符。
尝试与解决
根据我当前的情况,第一个情况不可能,开始尝试第二个,同时在处理第二个的过程中注意第三个。
因为很可能是最近添加了路径过长的文件导致,在解决新的更改的时候可能发现那个文件。
最开始并没有发现可特别疑的文件,顺利地把所有的文件提交了上去。之后发现 GitKragen 还是打不开仓库(排除了第二种情况)。
尝试对最近看起来文件路径还是蛮长的文件进行了路径长度统计,但基本都不超过 150。
所以实在太奇怪了……(第三种情况也要排除了?)😵
然而,在观察 Git History 的时候发现了神奇的事情:⭐️
发现之前提交了这个文件名巨长无比的文件??
赶紧测试了一下:

逼近 260,有很大可能,然后发现这个文件原来的名称是“常用的输入字符的上标、下标、脚标.txt”
顿时懂了,这个含中文字符的文件名在 git 里面中文字符被 \xxx 来编码代替,而所谓的“文件路径是 260 个字符”是没有对 \xxx 解码的情况下测定的长度。
更改文件名,之后,GitKragen 果然恢复正常了…… 😄
经验教训
- 了解可能导致 GitKragen 打不开仓库的情况。
- 在 Git 仓库里面
- 尽量不要让文件的层次太深(本案例没有太大这样的问题)
- 文件命名在没有特殊需求的情况下使用英文字符(中文字符对 GitKragen 的字符长度规则里是 ×4 的,容易超过它的上限 260)
希望本文对也喜爱 GitKraken 的同仁能有点启示。